Egyszerű tippek gyűjteménye, a jQuery-ben való elmélyülésed segítendő.
További nagyszerű listákért tekintsd meg [@sindresorhus](https://github.com/sindresorhus/) válogatott listáját.
noConflict()
      .on() binding (“kötés”) használata
          .click() helyett
      noConflict()
      A jQuery által használt $ álnevet más JavaScript könyvtárak
      is használják. Annak érdekében, hogy a jQuery ne ütközzön a különböző
      könyvtárak $ objektumával, használja a
      noConflict() metódust a dokumentum elején:
    
      Most a jQuery objektumra a jQuery változónevet a
      $ (például jQuery('div p')hide()). Ha a jQuery
      több verziója ugyanazon az oldalon található, akkor a
      noConflict () paranccsal adhat meg egy álnevet egy adott
      verzióhoz:
    
Mielőtt bármihez is kezdhetnél a jQuery-vel, először biztosra kell menned abban, hogy betöltött:
if (typeof jQuery == 'undefined') {
  console.log('jQuery hasn\'t loaded');
} else {
  console.log('jQuery has loaded');
}
    Most, hogy elstartoltunk…
A HTML elem használata előtt meg kell győződnie arról, hogy része a DOM-nak.
.on() binding (“kötés”) használata
      .click() helyett
    
      Az .on() függvény használata számos előnnyel rendelkezik a
      .click() megoldással szemben, mint például: több esemény
      egyszeri hozzáadása…
    
…a kötés alkalmazása dinamikusan létrehozott elemekre is (tehát nem kell egyesével végrehajtani a kötést minden dinamikus DOM elemre)…
…és a névterek felállításának lehetősége:
      Névterek segítségével “lecsatolhatsz” egyes konkrét eseményeket (pl.
      .off('click.menuOpening')).
    
      Hála a jQuery animate és scrollTop eljárásainak,
      nincs szükséged pluginokra ahhoz, hogy létrehozz egy egyszerű
      ‘scroll-to-top’ animációt:
    
// Back to top
$('.container').on('click', '.back-to-top', function (e) {
  e.preventDefault();
  $('html, body').animate({scrollTop: 0}, 800);
});
    <!-- Create an anchor tag -->
<div class="container">
  <a href="#" class="back-to-top">Back to top</a>
</div>
    
      A scrollTop értékének változtatásával beállíthatod, hova
      szeretnéd, hogy érkezzen a görgetősáv. Igazából amit csinálsz, az annyi,
      hogy a látható részt animálod egy 800 miliszekundumos időtartamon belül,
      aminek a végére ez aztán “felgurul” a dokumentum tetejére.
    
      Megjegyzés: Figyelj oda a
      scrollTop esetenkénti
      bugos viselkedésére.
    
If your web page uses a lot of images that aren’t visible initially (e.g., on hover) it makes sense to preload them:
$.preloadImages = function () {
  for (var i = 0; i < arguments.length; i++) {
    $('<img>').attr('src', arguments[i]);
  }
};
$.preloadImages('img/hover-on.png', 'img/hover-off.png');
    Alkalmanként szükséges lehet rá. hogy leellenőrizd, teljesen betöltöttek-e a képeid, annak érdekében, hogy folytatódhasson a scripted lefutása:
      Ezen felül azt is leellenőrizheted, hogy egy konkrét kép betöltött-e:
      mindössze cseréld le a fenti kódban az <img> címkét egy
      megfelelő azonosíra (ID) vagy osztályra.
    
Ha úgy alakul, hogy ‘törött képlinkeket’ találsz az oldaladon, egyenként mindet lecserélni fájdalmasan hosszú és kimerítő folyamat lenne. Ez az egyszerű kódrészlet sok fejfájástól megkímélhet:
$('img').on('error', function () {
  if(!$(this).hasClass('broken-image')) {
    $(this).prop('src', 'img/broken.png').addClass('broken-image');
  }
});
    Alternatívaként, ha egyszerűen csak el kívánod rejteni ezeket a betölt(het)etlen képeket, ez a kódrészlet gondoskodik róla:
      A jQuery AJAX eljárások elterjedt módjai szöveges, HTML, XML vagy JSON
      állományok lekérésének. Ha egy egyszerű űrlapot kívánsz AJAX-on keresztül
      elküldeni, a felhasználói bemenetet össze tudod gyűjteni a
      val() eljárás segítségével:
    
$.post('sign_up.php', {
  user_name: $('input[name=user_name]').val(),
  email:     $('input[name=email]').val(),
  password:  $('input[name=password]').val(),
});
    
      A val() hívások ugyanakkor számításigényesek. Felhasználói
      input begyűjtésére kedvezőbb módszer a serialize() függvény
      használata, ami ezeket string-ként gyűjti be:
    
Tegyük fel, hogy egy kattintható elem megjelenését szeretnéd megváltoztatni, amikor egy felhasználó a kurzorával éppen fölötte áll. (:hover)
Elemedhez hozzáadhatsz egy vagy több CSS osztályt ilyen esetekben; amikor a felhasználó arrébb viszi a kurzort, az osztály automatikusan eltávolításra kerül az elemről:
$('.btn').on('hover', function () {
  $(this).addClass('hover');
}, function () {
  $(this).removeClass('hover');
});
    
      Innentől már csak a szükséges CSS-t kell hozzáadnod. Viszont egy
      még egyszerűbb módszerért használhatod a
      toggleClass eljárást is:
    
Megjegyzés: a CSS gyorsabb megoldás lehet ebben az esetben, mindazonáltal érdemes tudnod róla, hogy ilyet is lehet.
      Alkalmanként előfordulhat, hogy érdekedben áll kikapcsolni a “küldés”
      gombot egy űrlapon, vagy letiltani egy vagy több szövegbeviteli mezőt,
      amíg a felhasználó végre nem hajt egy bizonyos akciót (pl. bepipálja az
      “elolvastam a felhasználói feltételeket” jelölőnégyzetet). Adj hozzá egy
      disabled tulajdonságot a beviteli mezőidhez, így kedved
      szerint (de)aktiválhatod őket:
    
      Nem kell mást tenned, mint újra futtatni a prop eljárást az
      adott beviteli mező(kö)n, ezúttal false értékkel:
    
Alkalmanként előfordulhat, hogy egy linkre kattintva nem kívánsz se betölteni egy bizonyos weboldalt, se ugyanazt az oldalt újra, hanem valami másra kell, mint például valami más script aktiválása. Ez a kód megelőzi az alapértelmezett akció lefutását:
      Gondolj bele, milyen sokszor kellett ugyanazt a kiválasztót (selector)
      leírnod újra meg újra. Minden $('.elem') kiválasztó újra meg
      újra végig kell böngéssze a teljes DOM-ot akárhányszor meghívod -
      függetlenül attól, hogy az a kiválasztó egyszer volt-e már futtatva.
      Szóval helyette futtasd a kiválasztót egyszer, és tárold el az eredményét
      egy változóban:
    
      Most már használhatod s blocks változót akárhányszor csak
      akarod, anélkül, hogy a DOM-ot át kelljen böngészni érte:
    
$('#hideBlocks').on('click', function () {
  blocks.fadeOut();
});
$('#showBlocks').on('click', function () {
  blocks.fadeIn();
});
    A jQuery kiválasztók eltárolása egy roppant egyszerű teljesítményjavító technika.
      A becsúszások és az áttűnések olyan tuajdonságok, amiket előszeretettel
      használunk animációkhoz a jQuery-ben. Lehet, hogy csak akkor szeretnéd
      láthatóvá tenni az adott elemet, amikor a felhasználó rákattint valamire,
      amire a fadeIn és slideDown eljárások
      tökéletesek. De ha azt szeretnéd, hogy az adott elem első kattintásra
      felbukkanjon, majd a másodikre eltűnjön, ez pont megfelel a célra:
    
// Fade
$('.btn').on('click', function () {
  $('.element').fadeToggle('slow');
});
// Toggle
$('.btn').on('click', function () {
  $('.element').slideToggle('slow');
});
    Íme egy egyszerá eljárás egy egyszerű harmonika-menü elkészítésére:
// Close all panels
$('#accordion').find('.content').hide();
// Accordion
$('#accordion').find('.accordion-header').on('click', function () {
  var next = $(this).next();
  next.slideToggle('fast');
  $('.content').not(next).slideUp('fast');
  return false;
});
    Ezen script hozzáadásával már nincs már feladatot hátra a weboldaladon, mint a szükséges HTML elkészítése ahhoz, hogy ezt működésre bírd.
Néha szükséged lehet arra, hogy két HTML div elem egyforma magas legyen, függetlenül azok belső tartalmától:
      Ez a példa beállít egy min-height értéket, ami azt jelenti,
      hogy a kiválasztott elemnek megengedjük, hogy a fő div-nél nagyobb legyen,
      de azt nem, hogy kisebb.
    
Egy rugalmasabb megoldás ciklusban végigmenni elemek egy adott halmazán, és azok közül a legmagasabbéhoz állítani a kérdéses elem magasságát:
var $columns = $('.column');
var height = 0;
$columns.each(function () {
  if ($(this).height() > height) {
    height = $(this).height();
  }
});
$columns.height(height);
    Ha minden minden oszop magasságát egyformára akarod:
var $rows = $('.same-height-columns');
$rows.each(function () {
  $(this).find('.column').height($(this).height());
});
    Megjegyzés: Erre sok megoldás van CSS-ben de a szükségleteidtől függően, érdemes lehet tudni, hogyan is megy ez jQuery-ben.
Külső linkek új böngészőfülön vagy -ablakban megnyitása, és annak biztosítása, hogy az azonos forrású linkek ugyanabban a fülben/ablakban nyílnak meg:
$('a[href^="http"]').attr('target', '_blank');
$('a[href^="//"]').attr('target', '_blank');
$('a[href^="' + window.location.origin + '"]').attr('target', '_self');
    
      Megjegyzés: window.location.origin nem
      működik IE10-ben.
      Ez a javítás
      gondoskodik erről a problémáról.
    
      A jQuery contains() kiválasztójának használatával
      megtalálhatsz szöveg(részlet)eket egy elem tartalmában. Ez a kód, ha nem
      talál szöveget az elemben, elrejti azt:
    
Javascript aktiválásra amikor a felhasználó ellapoz egy fülről, vagy visszalép oda:
$(document).on('visibilitychange', function (e) {
  if (e.target.visibilityState === 'visible') {
    console.log('Tab is now in view!');
  } else if (e.target.visibilityState === 'hidden') {
    console.log('Tab is now hidden!');
  }
});
    Amikor egy AJAX hívás HTTP 404 vagy 500 hibával tér vissza, a hibakezelő végrehajtásra kerül. Ha a hibakezelő nincs definiálva, további jQuery kódok potenciálisan működésképtelenné válnak. Definiálj egy globális AJAX hibakezelőt:
A jQuery lehetővé teszi plugin eljáráshívások “láncolását” a DOM ismételt lekérése folyamatának enyhítésére, valamint több jQuery objektum létrehozására. Tegyük fel, hogy az alábbi kódtöredék jelképezi a plugin eljáráshívásaid:
Ekkor igen komoly teljesítményövekedést érhetsz el láncolás használatával:
      Alternatívaként eltárolhatod az elemet egy változóban ($
      előtaggal):
    
Mind a láncolás, mint az eltárolás eljárásai “legjobb gyakorlatnak” (best practice) tekinthetők jQuery-ben, és rövidebb, gyorsabb kódot eredményeznek.
Tegyük fel, hogy egy listádban túl sok elem van. Mondjuk a lista tartalma egy CMS által került legenerálásra, és te szeretnéd ezt ABC-sorba rendezni:
var ul = $('#list'),
lis = $('li', ul).get();
lis.sort(function (a, b) {
  return ($(a).text().toUpperCase() < $(b).text().toUpperCase()) ? -1 : 1;
});
ul.append(lis);
    Meg is volnánk!
Ha le szeretnéd tiltani a jobb-klikket, az egész oldalra megteheted…
…de akár egy konkrét elemre is:
A Chrome, Firefox, Safari, Opera, Edge és IE11 böngészők jelenlegi verziói.